package com.poc.importacao.baseabstract;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.poc.log.Log;

public abstract class AbstractEntidadesAgrupadasPorRio extends AbstractManager {

    protected abstract Integer getTipoEntidade();

    protected abstract Integer getTipoRelacionamento();

    protected ResultSet getEntidadePrincipal() throws SQLException {
	return AbstractManager.getDatabaseManager().execute(String.format(Setup.SELECT_ENTIDADE, this.getTipoEntidade()));
    }

    protected ResultSet getRelacionados(String codLugarEntidade) throws SQLException {
	String query = String.format(Setup.SELECT_AGRUPADO, this.getTipoEntidade(), codLugarEntidade, codLugarEntidade);
	return AbstractManager.getDatabaseManager().execute(query);
    }

    @Override
    public void createInserts(String fileName) throws SQLException, IOException {
	ResultSet codLugarEntidades = this.getEntidadePrincipal();
	ResultSet riosRelacionados = null;

	String codLugarEntidade;

	Double count = 0.0;
	Log inserts = new Log(fileName);
	inserts.append(Setup.INSERT_CLAUSULA_BASE);
	while (codLugarEntidades.next()) {
	    codLugarEntidade = codLugarEntidades.getString(1);

	    riosRelacionados = this.getRelacionados(codLugarEntidade);
	    while (riosRelacionados.next()) {
		inserts.append((String.format(Setup.INSERT_RELACIONAMENTO_PARAMS, riosRelacionados.getString(1), codLugarEntidade, this
			.getTipoRelacionamento())));
	    }

	    count++;
	}

	inserts.close();
	this.finalize();

    }

}
